// 文件路径: src/main/java/com/cupk/dtos/DashboardDataDto.java
// 请用以下内容完全替换您现有的文件

package com.cupk.dtos;

import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@Data
public class DashboardDataDto {

    // 对应顶部的4个KPI卡片
    private KpiCard inProgressProjects;
    private KpiCard inProgressTasks;
    private KpiCard publishedPublications;
    private KpiCard budgetUsage;

    // 对应“项目进度概览”
    private List<ProjectProgressItem> projectProgress;

    // 对应“任务分布”饼图
    private List<ChartPoint> taskDistribution;

    // 对应“最近活动”列表
    private List<ActivityItem> recentActivities;

    // KPI卡片的数据结构
    @Data
    public static class KpiCard {
        private long value;
        private double trend; // 例如: 0.12 表示 +12%, -0.05 表示 -5%
    }

    // 项目进度项的数据结构
    @Data
    public static class ProjectProgressItem {
        private Long projectId;
        private String projectName;
        private String status;
        private int progress; // 0-100的进度百分比
    }

    // 通用图表数据点（用于饼图等）
    @Data
    public static class ChartPoint {
        private String name; // 对应图表的标签名 (如 '已完成')
        private long value; // 对应图表的数值
    }

    // 用于月度趋势图的专门数据点
    @Data
    public static class MonthlyChartPoint {
        private String month; // "1月", "2月" ...
        private BigDecimal value; // 使用BigDecimal以支持经费金额
    }

    // 最近活动项的数据结构
    @Data
    public static class ActivityItem {
        private String description;
        private String timestamp; // "3小时前", "5天前"
        private String type; // 'TASK', 'PROJECT', etc.
        private Long entityId;
    }
}